Kompleksowy przewodnik po tworzeniu rozszerze艅 przegl膮darki z Manifestem V3, obejmuj膮cy kluczowe interfejsy API JavaScript, strategie migracji i najlepsze praktyki dla globalnej publiczno艣ci.
Tworzenie Rozszerze艅 Przegl膮darki: Nawigacja po Manife艣cie V3 i API JavaScript
Rozszerzenia przegl膮darki oferuj膮 pot臋偶ny spos贸b na ulepszenie i dostosowanie przegl膮dania. Umo偶liwiaj膮 one programistom dodawanie funkcjonalno艣ci do przegl膮darek internetowych, interakcj臋 ze stronami internetowymi i integracj臋 z us艂ugami internetowymi. Ten przewodnik zawiera kompleksowy przegl膮d tworzenia rozszerze艅 przegl膮darki, koncentruj膮c si臋 na Manife艣cie V3 i podstawowych interfejsach API JavaScript, kt贸re nap臋dzaj膮 te rozszerzenia.
Zrozumienie rozszerze艅 przegl膮darki
Rozszerzenie przegl膮darki to ma艂y program, kt贸ry rozszerza funkcjonalno艣膰 przegl膮darki internetowej. Rozszerzenia mog膮 modyfikowa膰 strony internetowe, dodawa膰 nowe funkcje i integrowa膰 si臋 z zewn臋trznymi us艂ugami. S膮 one zazwyczaj pisane w JavaScript, HTML i CSS, i zapakowane jako plik ZIP z plikiem manifestu, kt贸ry opisuje metadane i uprawnienia rozszerzenia.
Popularne przypadki u偶ycia rozszerze艅 przegl膮darki obejmuj膮:
- Blokery reklam: Usuwanie reklam ze stron internetowych.
- Mened偶ery hase艂: Bezpieczne przechowywanie i zarz膮dzanie has艂ami.
- Narz臋dzia zwi臋kszaj膮ce produktywno艣膰: Ulepszanie przep艂ywu pracy za pomoc膮 funkcji takich jak zarz膮dzanie zadaniami i robienie notatek.
- Dostosowywanie tre艣ci: Modyfikowanie wygl膮du i zachowania stron internetowych.
- Narz臋dzia u艂atwie艅 dost臋pu: Poprawianie dost臋pno艣ci stron internetowych dla os贸b z niepe艂nosprawno艣ciami.
Manifest V3: Nowy standard
Manifest V3 to najnowsza wersja pliku manifestu rozszerzenia przegl膮darki, pliku JSON, kt贸ry opisuje metadane, uprawnienia i zasoby rozszerzenia. Wprowadza on znacz膮ce zmiany w procesie tworzenia rozszerze艅, koncentruj膮c si臋 przede wszystkim na poprawie bezpiecze艅stwa, prywatno艣ci i wydajno艣ci. Kluczowe zmiany w Manife艣cie V3 obejmuj膮:
- Service Workers: Zast膮pienie stron t艂a service workerami w celu poprawy wydajno艣ci i zmniejszenia zu偶ycia pami臋ci. Service workery to skrypty oparte na zdarzeniach, kt贸re dzia艂aj膮 w tle i obs艂uguj膮 zdarzenia takie jak 偶膮dania sieciowe i alarmy.
- Deklaratywny API 偶膮da艅 sieciowych: Zast膮pienie blokuj膮cego interfejsu API webRequest deklaratywnym interfejsem API 偶膮da艅 sieciowych w celu filtrowania 偶膮da艅 sieciowych. Zwi臋ksza to prywatno艣膰 i bezpiecze艅stwo poprzez ograniczenie dost臋pu rozszerzenia do ruchu sieciowego.
- Zasady bezpiecze艅stwa zawarto艣ci (CSP): Egzekwowanie bardziej rygorystycznych zasad CSP w celu zapobiegania wykonywaniu dowolnego kodu i 艂agodzenia zagro偶e艅 bezpiecze艅stwa.
- Wersja manifestu: Klucz manifest_version w pliku manifest.json musi by膰 ustawiony na 3.
Migracja z Manifestu V2 do Manifestu V3
Migracja z Manifestu V2 do Manifestu V3 wymaga starannego planowania i modyfikacji kodu. Oto przewodnik krok po kroku:
- Zaktualizuj plik manifestu: Ustaw
manifest_versionna 3 i zaktualizuj polapermissionsibackground, aby by艂y zgodne z wymaganiami Manifestu V3. - Zast膮p strony t艂a service workerami: Przepisz skrypty t艂a jako service workery, obs艂uguj膮c zdarzenia za pomoc膮 interfejs贸w API
chrome.scriptingichrome.alarms. - Migruj do deklaratywnego API 偶膮da艅 sieciowych: Zast膮p blokuj膮ce wywo艂ania API
webRequestdeklaratywnymi regu艂ami zdefiniowanymi w interfejsie APIdeclarativeNetRequest. - Zaktualizuj zasady bezpiecze艅stwa zawarto艣ci: Dostosuj pole
content_security_policyw pliku manifestu, aby by艂o zgodne z bardziej rygorystycznymi wymaganiami CSP. - Dok艂adnie przetestuj: Przetestuj rozszerzenie w r贸偶nych przegl膮darkach, aby zapewni膰 kompatybilno艣膰 i prawid艂owe dzia艂anie.
Przyk艂ad: Migracja skryptu t艂a do Service Workera
Manifest V2 (background.js):
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
return {cancel: true};
},
{urls: ["*.example.com/*"]},
["blocking"]
);
Manifest V3 (service-worker.js):
chrome.declarativeNetRequest.updateDynamicRules({
removeRuleIds: [1],
addRules: [{
"id": 1,
"priority": 1,
"action": { "type": "block" },
"condition": { "urlFilter": "*.example.com/*", "resourceTypes": ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest", "other"] }
}]
});
manifest.json (Manifest V3):
{
"manifest_version": 3,
"name": "My Extension",
"version": "1.0",
"description": "A simple extension",
"permissions": [
"declarativeNetRequest",
"declarativeNetRequestFeedback",
"storage"
],
"background": {
"service_worker": "service-worker.js"
},
"declarative_net_request": {
"rule_resources": [{
"id": "ruleset_1",
"enabled": true,
"path": "rules.json"
}]
}
}
Podstawowe interfejsy API JavaScript dla rozszerze艅 przegl膮darki
Rozszerzenia przegl膮darki opieraj膮 si臋 na zestawie interfejs贸w API JavaScript, aby wchodzi膰 w interakcje z przegl膮dark膮 i stronami internetowymi. Oto niekt贸re z najwa偶niejszych interfejs贸w API:
1. chrome.runtime
Interfejs API chrome.runtime zapewnia dost臋p do 艣rodowiska wykonawczego rozszerzenia. Umo偶liwia on rozszerzeniom komunikacj臋 ze skryptem t艂a, dost臋p do pliku manifestu i zarz膮dzanie cyklem 偶ycia rozszerzenia.
Kluczowe metody:
chrome.runtime.sendMessage(): Wysy艂a wiadomo艣膰 do skryptu t艂a lub innych rozszerze艅.chrome.runtime.onMessage.addListener(): Nas艂uchuje wiadomo艣ci z innych skrypt贸w.chrome.runtime.getManifest(): Zwraca plik manifestu rozszerzenia jako obiekt JavaScript.chrome.runtime.reload(): Ponownie 艂aduje rozszerzenie.
Przyk艂ad: Wysy艂anie wiadomo艣ci ze skryptu zawarto艣ci do skryptu t艂a
Skrypt zawarto艣ci (content.js):
chrome.runtime.sendMessage({message: "Hello from content script!"}, function(response) {
console.log("Response from background script: ", response.message);
});
Skrypt t艂a (service-worker.js):
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log("Message from content script: ", request.message);
sendResponse({message: "Hello from background script!"});
}
);
2. chrome.storage
Interfejs API chrome.storage zapewnia mechanizm przechowywania i pobierania danych w rozszerzeniu. Oferuje on zar贸wno lokalne, jak i zsynchronizowane opcje przechowywania.
Kluczowe metody:
chrome.storage.local.set(): Przechowuje dane lokalnie.chrome.storage.local.get(): Pobiera dane z pami臋ci lokalnej.chrome.storage.sync.set(): Przechowuje dane, kt贸re s膮 synchronizowane na wszystkich urz膮dzeniach u偶ytkownika.chrome.storage.sync.get(): Pobiera dane z zsynchronizowanej pami臋ci.
Przyk艂ad: Przechowywanie i pobieranie danych w pami臋ci lokalnej
// Store data
chrome.storage.local.set({key: "value"}, function() {
console.log("Value is set to " + "value");
});
// Retrieve data
chrome.storage.local.get(["key"], function(result) {
console.log("Value currently is " + result.key);
});
3. chrome.tabs
Interfejs API chrome.tabs umo偶liwia rozszerzeniom interakcj臋 z kartami przegl膮darki. Udost臋pnia on metody tworzenia, wykonywania zapyta艅, modyfikowania i zamykania kart.
Kluczowe metody:
chrome.tabs.create(): Tworzy now膮 kart臋.chrome.tabs.query(): Wykonuje zapytania o karty, kt贸re pasuj膮 do okre艣lonych kryteri贸w.chrome.tabs.update(): Aktualizuje w艂a艣ciwo艣ci karty.chrome.tabs.remove(): Zamyka kart臋.chrome.tabs.executeScript(): Wykonuje kod JavaScript w karcie.
Przyk艂ad: Tworzenie nowej karty
chrome.tabs.create({url: "https://www.example.com"}, function(tab) {
console.log("New tab created with ID: " + tab.id);
});
4. chrome.alarms
Interfejs API chrome.alarms umo偶liwia rozszerzeniom planowanie zada艅, kt贸re maj膮 by膰 wykonywane o okre艣lonej godzinie lub po okre艣lonym interwale. Jest to szczeg贸lnie wa偶ne w Manife艣cie V3, poniewa偶 zast臋puje u偶ycie timer贸w w stronach t艂a, kt贸re nie s膮 ju偶 obs艂ugiwane.
Kluczowe metody:
chrome.alarms.create(): Tworzy nowy alarm.chrome.alarms.get(): Pobiera istniej膮cy alarm.chrome.alarms.clear(): Czy艣ci alarm.chrome.alarms.getAll(): Pobiera wszystkie alarmy.chrome.alarms.onAlarm.addListener(): Nas艂uchuje zdarze艅 alarmu.
Przyk艂ad: Tworzenie alarmu
chrome.alarms.create("myAlarm", {delayInMinutes: 1, periodInMinutes: 1});
chrome.alarms.onAlarm.addListener(function(alarm) {
if (alarm.name === "myAlarm") {
console.log("Alarm triggered!");
}
});
5. chrome.scripting
Interfejs API chrome.scripting umo偶liwia rozszerzeniom wstrzykiwanie kodu JavaScript i CSS do stron internetowych. Ten interfejs API jest kluczowym sk艂adnikiem Manifestu V3 i jest u偶ywany przez service workery do interakcji ze stronami internetowymi po ich za艂adowaniu.
Kluczowe metody:
chrome.scripting.executeScript(): Wykonuje kod JavaScript w karcie lub ramce.chrome.scripting.insertCSS(): Wstawia kod CSS do karty lub ramki.
Przyk艂ad: Wstrzykiwanie kodu JavaScript do karty
chrome.scripting.executeScript({
target: {tabId: tabId},
function: function() {
console.log("Injected script!");
document.body.style.backgroundColor = 'red';
}
});
6. chrome.notifications
Interfejs API chrome.notifications umo偶liwia rozszerzeniom wy艣wietlanie powiadomie艅 u偶ytkownikowi. Jest to przydatne do dostarczania aktualizacji, alert贸w i innych wa偶nych informacji.
Kluczowe metody:
chrome.notifications.create(): Tworzy nowe powiadomienie.chrome.notifications.update(): Aktualizuje istniej膮ce powiadomienie.chrome.notifications.clear(): Czy艣ci powiadomienie.chrome.notifications.getAll(): Pobiera wszystkie powiadomienia.
Przyk艂ad: Tworzenie powiadomienia
chrome.notifications.create('myNotification', {
type: 'basic',
iconUrl: 'icon.png',
title: 'My Extension',
message: 'Hello from my extension!'
}, function(notificationId) {
console.log('Notification created with ID: ' + notificationId);
});
7. chrome.contextMenus
Interfejs API chrome.contextMenus umo偶liwia rozszerzeniom dodawanie element贸w do menu kontekstowego przegl膮darki (menu po klikni臋ciu prawym przyciskiem myszy). Zapewnia to wygodny spos贸b dla u偶ytkownik贸w na dost臋p do funkcjonalno艣ci rozszerzenia bezpo艣rednio ze stron internetowych.
Kluczowe metody:
chrome.contextMenus.create(): Tworzy nowy element menu kontekstowego.chrome.contextMenus.update(): Aktualizuje istniej膮cy element menu kontekstowego.chrome.contextMenus.remove(): Usuwa element menu kontekstowego.chrome.contextMenus.removeAll(): Usuwa wszystkie elementy menu kontekstowego utworzone przez rozszerzenie.
Przyk艂ad: Tworzenie elementu menu kontekstowego
chrome.contextMenus.create({
id: "myContextMenuItem",
title: "My Context Menu Item",
contexts: ["page", "selection"]
}, function() {
console.log("Context menu item created.");
});
chrome.contextMenus.onClicked.addListener(function(info, tab) {
if (info.menuItemId === "myContextMenuItem") {
console.log("Context menu item clicked!");
alert("You clicked the context menu item!");
}
});
8. chrome.i18n
Interfejs API chrome.i18n s艂u偶y do internacjonalizacji rozszerzenia, dzi臋ki czemu jest ono dost臋pne dla u偶ytkownik贸w w r贸偶nych j臋zykach i regionach. Umo偶liwia on udost臋pnianie zlokalizowanych wersji interfejsu u偶ytkownika i wiadomo艣ci rozszerzenia.
Kluczowe metody:
chrome.i18n.getMessage(): Pobiera zlokalizowany ci膮g znak贸w z katalogu_localesrozszerzenia.
Przyk艂ad: U偶ywanie chrome.i18n do lokalizacji
Najpierw utw贸rz katalog _locales w folderze g艂贸wnym rozszerzenia. Wewn膮trz utw贸rz foldery specyficzne dla j臋zyka, takie jak en, es, fr itd.
W ka偶dym folderze j臋zykowym utw贸rz plik messages.json. Na przyk艂ad w _locales/en/messages.json:
{
"extensionName": {
"message": "My Extension",
"description": "The name of the extension."
},
"greetingMessage": {
"message": "Hello, world!",
"description": "A simple greeting message."
}
}
Nast臋pnie w kodzie JavaScript:
let extensionName = chrome.i18n.getMessage("extensionName");
let greeting = chrome.i18n.getMessage("greetingMessage");
console.log(extensionName); // Output: My Extension
console.log(greeting); // Output: Hello, world!
Zgodno艣膰 z r贸偶nymi przegl膮darkami
Chocia偶 Chrome jest najpopularniejsz膮 przegl膮dark膮 do tworzenia rozszerze艅, wa偶ne jest, aby wzi膮膰 pod uwag臋 kompatybilno艣膰 z r贸偶nymi przegl膮darkami. Firefox, Safari i inne przegl膮darki r贸wnie偶 obs艂uguj膮 rozszerzenia, ale ich interfejsy API i formaty manifest贸w mog膮 si臋 nieznacznie r贸偶ni膰.
Aby zapewni膰 zgodno艣膰 z r贸偶nymi przegl膮darkami:
- U偶ywaj interfejsu API WebExtensions: Interfejs API WebExtensions to standaryzowany interfejs API do tworzenia rozszerze艅 przegl膮darki, kt贸ry jest obs艂ugiwany przez wiele przegl膮darek.
- Testuj w r贸偶nych przegl膮darkach: Przetestuj swoje rozszerzenie w r贸偶nych przegl膮darkach, aby zidentyfikowa膰 i naprawi膰 problemy ze zgodno艣ci膮.
- U偶ywaj polyfilli: U偶ywaj polyfilli, aby zapewni膰 brakuj膮c膮 funkcjonalno艣膰 API w r贸偶nych przegl膮darkach.
- Kod warunkowy: U偶ywaj kodu warunkowego, aby dostosowa膰 si臋 do r贸偶nic specyficznych dla przegl膮darki. Na przyk艂ad:
if (typeof browser === "undefined") { var browser = chrome; }
Najlepsze praktyki dotycz膮ce tworzenia rozszerze艅 przegl膮darki
Oto kilka najlepszych praktyk, kt贸rych nale偶y przestrzega膰 podczas tworzenia rozszerze艅 przegl膮darki:
- Minimalizuj uprawnienia: Pro艣 tylko o uprawnienia, kt贸rych Twoje rozszerzenie absolutnie potrzebuje. Zwi臋ksza to prywatno艣膰 i bezpiecze艅stwo u偶ytkownika.
- U偶ywaj bezpiecznych praktyk kodowania: Przestrzegaj bezpiecznych praktyk kodowania, aby zapobiec lukom w zabezpieczeniach, takich jak skrypty w wielu witrynach (XSS) i wstrzykiwanie kodu.
- Optymalizuj wydajno艣膰: Zoptymalizuj wydajno艣膰 swojego rozszerzenia, aby zminimalizowa膰 jego wp艂yw na wydajno艣膰 przegl膮darki.
- Udost臋pnij jasn膮 i zwi臋z艂膮 dokumentacj臋: Udost臋pnij jasn膮 i zwi臋z艂膮 dokumentacj臋, aby pom贸c u偶ytkownikom zrozumie膰, jak korzysta膰 z rozszerzenia.
- Obs艂uguj b艂臋dy w spos贸b elegancki: Zaimplementuj obs艂ug臋 b艂臋d贸w, aby zapobiec awarii rozszerzenia lub powodowaniu nieoczekiwanego zachowania.
- Utrzymuj swoje rozszerzenie w aktualnym stanie: Regularnie aktualizuj swoje rozszerzenie, aby rozwi膮zywa膰 b艂臋dy, luki w zabezpieczeniach i problemy ze zgodno艣ci膮.
- Rozwa偶 internacjonalizacj臋 (i18n): Zaprojektuj swoje rozszerzenie tak, aby mo偶na je by艂o 艂atwo zlokalizowa膰 w r贸偶nych j臋zykach. U偶ywaj interfejsu API
chrome.i18n. - Szanuj prywatno艣膰 u偶ytkownika: B膮d藕 transparentny co do tego, w jaki spos贸b rozszerzenie zbiera i wykorzystuje dane u偶ytkownika, i uzyskaj zgod臋 u偶ytkownika, gdy jest to konieczne. Przestrzegaj odpowiednich przepis贸w dotycz膮cych prywatno艣ci, takich jak RODO i CCPA.
Przesy艂anie rozszerzenia do sklep贸w
Po opracowaniu i przetestowaniu rozszerzenia, b臋dziesz chcia艂 przes艂a膰 je do sklep贸w z rozszerzeniami przegl膮darki, aby udost臋pni膰 je u偶ytkownikom. Ka偶da przegl膮darka ma w艂asny sklep i proces przesy艂ania:
- Chrome Web Store: Prze艣lij swoje rozszerzenie do Chrome Web Store dla u偶ytkownik贸w Chrome. Proces ten obejmuje utworzenie konta programisty, spakowanie rozszerzenia i przes艂anie go do sklepu.
- Firefox Add-ons: Prze艣lij swoje rozszerzenie do Firefox Add-ons dla u偶ytkownik贸w Firefox. Proces jest podobny do Chrome Web Store i obejmuje utworzenie konta programisty i przes艂anie rozszerzenia do weryfikacji.
- Safari Extensions Gallery: Prze艣lij swoje rozszerzenie do Safari Extensions Gallery dla u偶ytkownik贸w Safari. Proces ten obejmuje uzyskanie certyfikatu programisty od firmy Apple i przes艂anie rozszerzenia do weryfikacji.
Przesy艂aj膮c rozszerzenie, upewnij si臋, 偶e podajesz dok艂adne i kompletne informacje, w tym opisowy tytu艂, szczeg贸艂owy opis, zrzuty ekranu i polityk臋 prywatno艣ci. Sklepy z rozszerzeniami sprawdzaj膮 przes艂ane zg艂oszenia, aby upewni膰 si臋, 偶e s膮 zgodne z ich zasadami i wytycznymi.
Wnioski
Tworzenie rozszerze艅 przegl膮darki z Manifestem V3 i interfejsami API JavaScript oferuje pot臋偶ny spos贸b na dostosowanie i ulepszenie przegl膮dania. Rozumiej膮c podstawowe poj臋cia, przestrzegaj膮c najlepszych praktyk i uwzgl臋dniaj膮c zgodno艣膰 z r贸偶nymi przegl膮darkami, programi艣ci mog膮 tworzy膰 cenne i anga偶uj膮ce rozszerzenia dla u偶ytkownik贸w na ca艂ym 艣wiecie. Wraz z ewolucj膮 sieci rozszerzenia przegl膮darki b臋d膮 nadal odgrywa膰 istotn膮 rol臋 w kszta艂towaniu przysz艂o艣ci Internetu.
Pami臋taj, aby zawsze dawa膰 priorytet prywatno艣ci i bezpiecze艅stwu u偶ytkownik贸w podczas tworzenia rozszerze艅. Tworz膮c z my艣l膮 o tych zasadach, mo偶esz tworzy膰 rozszerzenia, kt贸re s膮 zar贸wno u偶yteczne, jak i godne zaufania.
Ten przewodnik stanowi solidn膮 podstaw臋 do rozpocz臋cia tworzenia rozszerze艅 przegl膮darki. Zag艂臋biaj膮c si臋 g艂臋biej, poznaj r贸偶ne interfejsy API i funkcje oraz eksperymentuj z r贸偶nymi technikami, aby tworzy膰 innowacyjne i wp艂ywowe rozszerzenia.